package cn.kuick.match8.test2;

import java.util.Iterator;
import java.util.LinkedList;

public class Joseph {

	public int getResult(int n) {
		LinkedList<Integer> nums = new LinkedList<>();
		for(int i=0; i<n; i++) {
			nums.add(i + 1);
		}
		
		remove(nums, 2);
		
        return nums.get(0);
    }

	private void remove(LinkedList<Integer> nums, int n) {
		if (nums.size() > 1) {
			int i=0;
			
			for(Iterator<Integer> it=nums.iterator(); it.hasNext(); ) {
				it.next();
				i++;
				
				if (i != 1) {
					it.remove();
				}
				
				if (i == n) {
					i=0;
				}
			}
			
			if (nums.size() > 0) {
				nums.addFirst(nums.getLast());
				nums.removeLast();
			}
			
			remove(nums, n + 1);
		}
	}
}
